package fr.upstlse.glre.client.widgets.fields;

import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.TextField;

import fr.upstlse.glre.client.RfgConstante;
import fr.upstlse.glre.client.vo.user.ProfesseurVOGWT;

public class ProfesseurFields implements IUserFields {
	FormPanel formPanel;
	ProfesseurVOGWT professeur;
	TextField<String> id;
	TextField login;
	TextField motdepasse;
	TextField nom;
	TextField prenom;
	TextField email;
	TextField enseignement;

	boolean userFields;

	public ProfesseurFields(ProfesseurVOGWT pProfesseur, FormPanel pFormPanel, boolean pUserFields) {
		professeur = pProfesseur;
		formPanel = pFormPanel;
		userFields = pUserFields;
		
		if(userFields) {
			id = new TextField<String>();
			login = new TextField();
			motdepasse = new TextField();
		}
		
		nom = new TextField();
		prenom = new TextField();
		email = new TextField();
		enseignement = new TextField();
		
		createFields();
		
		if(professeur != null) {
			setFieldsValues();
		}
	}

	public void createFields() {
		if (userFields) {
			id.setName(RfgConstante.PROFESSEUR_ID);
			id.setVisible(false);
			id.setLabelStyle("display: none");
			formPanel.add(id);
			
			login.setName(RfgConstante.PROFIL_EDITING_FIELD_LOGIN_NAME);
			login.setFieldLabel(RfgConstante.PROFIL_EDITING_FIELD_LOGIN_LABEL);
			formPanel.add(login);

			motdepasse.setPassword(true);
			motdepasse
					.setName(RfgConstante.PROFIL_EDITING_FIELD_MOTDEPASSE_NAME);
			motdepasse
					.setFieldLabel(RfgConstante.PROFIL_EDITING_FIELD_MOTDEPASSE_LABEL);
			formPanel.add(motdepasse);
		}

		nom.setName(RfgConstante.PROFESSEUR_EDITION_FIELD_NOM_NAME);
		nom.setFieldLabel(RfgConstante.PROFESSEUR_EDITION_FIELD_NOM_LABEL);
		formPanel.add(nom);

		prenom.setName(RfgConstante.PROFESSEUR_EDITION_FIELD_PRENOM_NAME);
		prenom
				.setFieldLabel(RfgConstante.PROFESSEUR_EDITION_FIELD_PRENOM_LABEL);
		formPanel.add(prenom);

		email.setName(RfgConstante.PROFESSEUR_EDITION_FIELD_EMAIL_NAME);
		email.setFieldLabel(RfgConstante.PROFESSEUR_EDITION_FIELD_EMAIL_LABEL);
		formPanel.add(email);

		enseignement
				.setName(RfgConstante.PROFESSEUR_EDITION_FIELD_ENSEIGNEMENT_NAME);
		enseignement
				.setFieldLabel(RfgConstante.PROFESSEUR_EDITION_FIELD_ENSEIGNEMENT_LABEL);
		formPanel.add(enseignement);
	}

	public void setFieldsValues() {
		if (userFields) {
			id.setValue(new Long(professeur.getId()).toString());
			login.setValue(professeur.getLogin());
			motdepasse.setValue(professeur.getPassword());
		}

		nom.setValue(professeur.getNom());
		prenom.setValue(professeur.getPrenom());
		email.setValue(professeur.getEmail());
		enseignement.setValue(professeur.getEnseignement());
	}

	public void removeFields() {
		if (userFields) {
			formPanel.remove(id);
			formPanel.remove(login);
			formPanel.remove(motdepasse);
		}
		formPanel.remove(nom);
		formPanel.remove(prenom);
		formPanel.remove(email);
		formPanel.remove(enseignement);
	}

	public FormPanel getFormPanel() {
		return formPanel;
	}

	public void setFormPanel(FormPanel formPanel) {
		this.formPanel = formPanel;
	}

	public ProfesseurVOGWT getProfesseur() {
		return professeur;
	}

	public void setProfesseur(ProfesseurVOGWT professeur) {
		this.professeur = professeur;
	}

	public TextField<String> getId() {
		return id;
	}

	public void setId(TextField<String> id) {
		this.id = id;
	}

	public TextField getLogin() {
		return login;
	}

	public void setLogin(TextField login) {
		this.login = login;
	}

	public TextField getMotdepasse() {
		return motdepasse;
	}

	public void setMotdepasse(TextField motdepasse) {
		this.motdepasse = motdepasse;
	}

	public TextField getNom() {
		return nom;
	}

	public void setNom(TextField nom) {
		this.nom = nom;
	}

	public TextField getPrenom() {
		return prenom;
	}

	public void setPrenom(TextField prenom) {
		this.prenom = prenom;
	}

	public TextField getEmail() {
		return email;
	}

	public void setEmail(TextField email) {
		this.email = email;
	}

	public TextField getEnseignement() {
		return enseignement;
	}

	public void setEnseignement(TextField enseignement) {
		this.enseignement = enseignement;
	}

	public boolean isUserFields() {
		return userFields;
	}

	public void setUserFields(boolean userFields) {
		this.userFields = userFields;
	}

	public ComboBox getRole() {
		// TODO Auto-generated method stub
		return null;
	}
	
}
